generator prim. kluca v IB

Otázka od: Hlas

13. 9. 2002 6:53

chcem vytvorit generator Primarneho kluca pre IB tabulku
robim to takto:

1. vytvorim na serveri generator
2. vytvorim pohlad - view, ktory mi ponuka nove cislo
3. do data modulu som si vlozil query, ktore selectom dostava nove cislo z
pohladu
4. aktivujem query pri afterinsert udalosti clientdatasetu a ziskavam tak
primarny kluc

nejde to jednoduchsie?
nemam na mysli zavesit generator na trigger, to asi nefunguje pri master-detail
vazbe.

Odpovedá: Jan Sebelík

13. 9. 2002 9:28

Odesílatel: Hlas <hlas@inmail.sk>
chcem vytvorit generator Primarneho kluca pre IB tabulku
robim to takto:

1. vytvorim na serveri generator
2. vytvorim pohlad - view, ktory mi ponuka nove cislo
3. do data modulu som si vlozil query, ktore selectom dostava nove cislo z
pohladu
4. aktivujem query pri afterinsert udalosti clientdatasetu a ziskavam tak
primarny kluc

nejde to jednoduchsie?
nemam na mysli zavesit generator na trigger, to asi nefunguje pri master-detail
vazbe.

[Honza]
Prededevsim generovani primarniho klice je otazkou navrhu databaze. Kdyz
navrhuju databazi, nevim (nebo se tak alespon tvarim), jestli tam bude nekdo
pristupovat z Delphi nebo z neceho jineho. Takze trigger urcite ano, ale treba
takto:
if (new.id is null) then new.id = gen_id(g_id,1);

Ted jak z Delphi (klient)

Radsi bych napsal ulozenou proceduru, ktera mi vrati nove ID. Abych rekl
pravdu, moc si to view nedokazu predstavit.

Komponenty IBX (TIBDataSet) maji neco jako "generator field", jenze ty mluvis o
TClientDataSet (vicevrstva aplikace?), takze to mi nepomuze.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: Ondrej Kelle

13. 9. 2002 9:48

> chcem vytvorit generator Primarneho kluca pre IB tabulku
> robim to takto:
>
> 1. vytvorim na serveri generator
> 2. vytvorim pohlad - view, ktory mi ponuka nove cislo
> 3. do data modulu som si vlozil query, ktore selectom dostava nove cislo z
pohladu
> 4. aktivujem query pri afterinsert udalosti clientdatasetu a ziskavam tak
primarny kluc
>
> nejde to jednoduchsie?
> nemam na mysli zavesit generator na trigger, to asi nefunguje pri
master-detail vazbe.

ten view je tam podla mna zbytocny, malo by stacit query:
select gen_id(mygenerator, 1) from rdb$database

HTH
TOndrej

Odpovedá: Hlas

13. 9. 2002 11:12

ten sposob s triggerom je strasne jednoduchy, ale ak mas tabulky
master-detail a primarny
kluc sa pri appende na master zazname a pridavani zaznamov do detailu
nepozna, tak to
stale pisti, ze pole nema hodnotu. celkovo sa velmi zle pracuje ak nie je
primarny kluc- vazba
master/detail znama uz pri editacii zaznamov. Jednoducho delphi formulare
potrebuju poznat
tuto hodnotu skor, nie az nakoniec pri zapise na server. Inak jedna sa o
D6/DBExpress/IB6.


Skusim napad od Ondreja Kelleho, aspon vynecham view a trochu sa to mozno
zjednodusi.
inak ten system je funkcny, ja len zistujem ,ci sa to neda urobit
elegantnejsie.


----- Original Message -----
From: "Jan Sebelík" <honza@haes.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, September 13, 2002 8:39 AM
Subject: Re: generator prim. kluca v IB


Odesílatel: Hlas <hlas@inmail.sk>
chcem vytvorit generator Primarneho kluca pre IB tabulku
robim to takto:

1. vytvorim na serveri generator
2. vytvorim pohlad - view, ktory mi ponuka nove cislo
3. do data modulu som si vlozil query, ktore selectom dostava nove cislo z
pohladu
4. aktivujem query pri afterinsert udalosti clientdatasetu a ziskavam tak
primarny kluc

nejde to jednoduchsie?
nemam na mysli zavesit generator na trigger, to asi nefunguje pri
master-detail vazbe.

[Honza]
Prededevsim generovani primarniho klice je otazkou navrhu databaze. Kdyz
navrhuju databazi, nevim (nebo se tak alespon tvarim), jestli tam bude nekdo
pristupovat z Delphi nebo z neceho jineho. Takze trigger urcite ano, ale
treba takto:
if (new.id is null) then new.id = gen_id(g_id,1);

Ted jak z Delphi (klient)

Radsi bych napsal ulozenou proceduru, ktera mi vrati nove ID. Abych rekl
pravdu, moc si to view nedokazu predstavit.

Komponenty IBX (TIBDataSet) maji neco jako "generator field", jenze ty
mluvis o TClientDataSet (vicevrstva aplikace?), takze to mi nepomuze.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================